"""
match()：从字符串的开始处进行匹配
search()：在整个字符串中搜索第一个匹配的值
findall()：在整个字符串中搜索所有符合正则表达式的字符串，返回列表
sub(): 实现字符串替换
# pattern: 正则表达式
# string: 要匹配的字符串
# flags: 可选，控制匹配方式
#     - A：只进行 ASCII 匹配
#     - I：不区分大小写
#     - M：将 ^ 和 $ 用于包括整个字符串的开始和结尾的每一行
#     - S：使用 (.) 字符匹配所有字符（包括换行符）
#     - X：忽略模式字符串中未转义的空格和注释
"""

import re

# compile()：将字符串转换为正则表达式对象
# 需要多次使用这个正则表达式的场景

# 匹配包含hogwarts 的字符串
# pattern = r"hogwarts"
# 转换为正则对象
# prog = re.compile(pattern)

# 匹配包含hogwarts 的字符串
pattern = r"hog\w+"

s1 = "Hogwarts is magic school"
# math1 = re.match(pattern, s1, re.I)
# math1 = re.search(pattern, s1, re.I)
# print(math1)
# print(f"配置值的起始位置为：{math1.start()}")
# print(f"配置值的结束位置为：{math1.end()}")
# print(f"配置值的元组为：{math1.span()}")
# print(f"要配置的字符串为：{math1.string}")
# print(f"配置的数据为：{math1.group()}")

# match_list = re.findall(pattern, s1, re.I)
# print(match_list)

s2 = "I like hogwarts"
# math2 = re.match(pattern, s2, re.I)
# math2 = re.search(pattern, s2, re.I)
# print(math2)

# match_lists2 = re.findall(pattern, s2, re.I)
# print(match_lists2)

# sub(): 实现字符串替换
# 匹配手机号码
# patterns = r"1[34578]\d{9}"
# s3 = "中奖号码 123456, 联系电话 15611111111"
# result = re.sub(patterns, '1xxxxxxxxxx',s3)
# print(result)

# split()：根据正则表达式分割字符串，返回列表
# pattern：正则表达式
# string：要匹配的字符串
# maxsplit：可选，表示最大拆分次数
# flags：可选，控制匹配方式

p = r"[?|&]"
url = "https://vip.ceshiren.com/#/layout/course_ppt?url=https%3A%2F%2Fpdf.ceshiren.com%2Fbook%2Fpython_programming%2Fppt%2F%5B%25E5%25BD%2595%25E6%2592%25AD%5D%25E5%2586%2585%25E7%25BD%25AE%25E5%25BA%2593re.html&path=%2Flayout%2Fsection&name=%E5%AD%A6%E4%B9%A0%E8%BF%9B%E5%BA%A6"
r = re.split(p, url)
print(r)


